#include <iostream>

using namespace std;
class Date
{
    private:
    int Day;
    int Month;
    int Year;
   //Edited from google codepage

    public:
    Date (int InputDay, int InputMonth, int InputYear):
    Day(InputDay),Month(InputMonth),Year(InputYear){};

    //Unary Increment operator
    //Prefix operator
    Date& operator ++()
    {
        ++Day;
        return *this;
    }
    //Prefix operator
    Date& operator --()
    {
        --Day;
        return *this;
    }

    //postfix differs from prefix operator in return-type and parameters
    Date operator ++ (int)
    {
        // Store a copy of the current state of the object,
        //before incrementing day
        Date Copy(Day,Month,Year);
        ++Day;

        return Copy;

    }
    Date operator -- (int)
    {
        // Store a copy of the current state of the object,
        //before incrementing day
        Date Copy(Day,Month,Year);
        --Day;

        return Copy;

    }
    void DisplayDate()
    {

        cout<<Day<<"/"<<Month<< "/"<<Year<<endl;
    }


};
int main()
{

    Date Holiday(14,11,2012);
    Holiday.DisplayDate();

    ++Holiday; //Prefix operator
    cout<<"After Increment : ";
    Holiday.DisplayDate();
    --Holiday; //Prefix operator
    --Holiday; //Prefix operator
    cout<<"After two decrement : ";
    Holiday.DisplayDate();

    Holiday++;
    Holiday.DisplayDate(); //postfix operator
}
